package com.ww.java.enums;

public class EnumClass {
	public static void main(String[] args) {
		for (Shrubbery s : Shrubbery.values()) {
			// ordinal()方法返回一个int值，从0开始，可以使用==来比较enum实例
			// 编译器会自动为你提供equals()和hashCode()方法
			System.out.println(s + " ordinal: " + s.ordinal());
			// Enum类实现了Comparable接口，所以它具有compareTo()方法，同时还实现了Serializable接口
			System.out.println(s.compareTo(Shrubbery.CRAWLING) + " ");
			System.out.println(s.equals(Shrubbery.CRAWLING) + " ");
			System.out.println(s == Shrubbery.CRAWLING);
			// 如果在enum实例上调用getDeclaringClass()方法，能知道其所属enum类
			System.out.println(s.getDeclaringClass());
			// name()方法返回enum实例声明时的名字，与使用toString()方法效果相同。valueOf()是在Enum中定义的static方法
			// 根据给定的名字返回相应的enum实例
			System.out.println(s.name());
			System.out.println("-------------------");
		}
		
		// 测试valueOf()方法
		Shrubbery shrubbery = Shrubbery.valueOf("GROUND");
		System.out.println("测试valueOf()方法：" + shrubbery);
	}
}

enum Shrubbery { GROUND, CRAWLING, HANGING }